/**
 * File: app_general.js
 * Author: Rommel Meza
 * Fech: 10/11/2011
 * Description: Archivo de manejo de peticiones AJAX ligado con clase CAjaxScript.php
 * Las funciones utilizan JQuery v1.7
 */

// Funciones 

/**
 * Funcion que realiza una peticion POST con formulario y muestra una pantalla
 * modal en espera de respuesta.
 * @param _url Url que a la cual realizara la peticion POST.
 * @param _divModal Div que se mostrara como Dialog en lo que espera respuesta.
 * @param _divCommand Div donde se insertara el resultado de la peticion.
 * @param _form Formulario que sera enviado en POST.
 * @param _title Titulo que tendra la pantalla modal.
 */
function callActionWithForm(_control, _url, _divModal, _divCommand, _form, _title){
	
	buildModalUpdater(_divModal, _title);
	
	$.ajax({
		type: "POST",
		url: _url,
		dataType: 'html',
		data: $('#'+_form).serialize(),
		success: function(msg) {
				$('#'+_divCommand).html(msg);
				$("#"+_divModal).dialog("close");
		},
		error: function(result) {
			$("#"+_divModal).dialog("close");
	        alert("Se genero un error en la peticion.");
	    }
	});
}

/**
 * Function que realiza una peticion POST sin formulario y muestra una pantalla
 * modal en espera de respuesta.
 * @param _url Url que a la cual realizara la peticion POST.
 * @param _divModal Div que se mostrara como Dialog en lo que espera respuesta.
 * @param _divCommand Div donde se insertara el resultado de la peticion.
 * @param _title Titulo que tendra la pantalla modal.
 */
function callAction(_url, _divModal, _divCommand, _title){
	
	buildModalUpdater(_divModal, _title);
	
	$.ajax({
		type: "POST",
		url: _url,
		dataType: 'html',
		success:
			function(msg) {
				$('#'+_divCommand).html(msg);
				$("#"+_divModal).dialog("close");
			},
		error: function(result) {
			$("#"+_divModal).dialog("close");
	        alert("Se genero un error en la peticion.");
	    }
	});
}

/**
 * 
 * @param _url Url que a la cual realizara la peticion GET.
 * @param _divAction Div donde se insertara el resultado de la peticion.
 * @param _modal Bool que indica si mostrara pantalla modal o solo icono de carga
 * @param _divModal En caso de que sea modal se indica el div a mostrar como dialog
 * @param _title En caso de que sea modal se indica el titulo que se requiere
 */
function callUpdateDiv(_url, _divAction, _modal, _divModal, _title){
	
	//Valida si es modal
	if(_modal){
		buildModalUpdater(_divModal, _title);
	}else{
		//Inserta spiner esperando respuesta
		$('#'+_divAction).css('display', 'block');
		$('#'+_divAction).html("<div style='height: 50px;'><img src='content/img/loading.gif'/></div>");
	}
	
	$.ajax({
		type: "GET",
		url: _url+"&rnd="+Math.random(),
		dataType: 'html',
		success:
			function(msg) {
				$('#'+_divAction).html(msg);
				if(_modal){
					$("#"+_divModal).dialog("close");
				}
			}
	});
}

/**
 * 
 * @param _url Url que a la cual realizara la peticion POST.
 * @param _divAction Div donde se insertara el resultado de la peticion.
 * @param _form Formulario que se enviara en la peticion POST
 * @param _modal Bool que indica si mostrara pantalla modal o solo icono de carga
 * @param _divModal En caso de que sea modal se indica el div a mostrar como dialog
 * @param _title En caso de que sea modal se indica el titulo que se requiere
 */
function callUpdateDivWithForm(_control, _url, _divAction, _form , _modal, _divModal, _title){
	
	_form = $('#'+_control.name).parents('form:first').attr("id");
	
	//Valida si es modal
	if(_modal){
		buildModalUpdater(_divModal, _title);
	}else{
		//Inserta spiner esperando respuesta
		$('#'+_divAction).css('display', 'block');
		//style='height: 30px;'
		$('#'+_divAction).html("<div><img src='content/img/loading.gif' height='12' width='12'/></div>");
	}
	
	$.ajax({
		type: "POST",
		url: _url,
		dataType: 'html',
		data: $('#'+_form).serialize(),
		success:
			function(msg) {
				$('#'+_divAction).html(msg);
				if(_modal){
					$("#"+_divModal).dialog("close");
				}
			}
	});
}

/**
 * Construye pantalla modal
 * @param _divModal Div que sera convertido en modal
 * @param _title Titulo de la pantalla modal
 */
function buildModalUpdater(_divModal, _title){
	//Construye el dialogo a mostrar
	$("#"+_divModal).dialog({
		autoOpen: true,
		modal: true,
		closeOnEscape: false,
		draggable: false,
		resizable: false,
		height: 100,
		width: 100,
		title: _title,
		open: function(event, ui) { jQuery('.ui-dialog-titlebar-close').hide(); }
	});
}